#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <climits>
#define int long long 
#define x first 
#define y second 
using namespace std ;
typedef pair<int,int> PII;
const int N = 1e5 + 10;
int a[N];
vector<int> cnt;
PII p[N];
map<int,int> mp;
void solve()
{
     int n,k;
     cin >> n >> k;
     for(int i = 1; i <= n; i++) cin >> a[i];
     for(int i = 1; i <= n; i++) mp[a[i]] ++;
     for(auto &c : mp)  cnt.push_back(c.y);
     sort(cnt.begin() , cnt.end() , greater<int>());//从大到小排序
     int ans = 0;
     if(k <= mp.size()) 
     {
         cout << k << endl;
         return;
     }
     else  
     {
        int v = k - mp.size();//k多出城池数量的部分
        for(int i = 0; i < mp.size(); i++)
        {
            v = v + 1 - cnt[i];
            if(v <= 0)
            {
                cout << mp.size() - i - 1 << endl;
                return;
            }
        }
     }
  
}
signed main()
{
     ios::sync_with_stdio(false);
     cin.tie(nullptr),cout.tie(nullptr);
     int t  = 1 ;
     // cin >> t;
     while(t -- ) solve();
     return 0;
}